/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dominio.servicio.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOCosteoImportacion;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioCosteoImportacion;
import pe.com.cotelasa.scp.entidad.CosteoImportacion;

/**
 *
 * @author WINDOWS 7
 */
@Service
public class ServicioCosteoImportacionImpl implements IServicioCosteoImportacion, Serializable {
    
    @Inject
    private IDAOCosteoImportacion dao; 
    
    @Override
    public Collection<CosteoImportacion> listarCosteoImportacionActivos() throws ServiceException {
        try {
            return dao.listarActivos(CosteoImportacion.class);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public CosteoImportacion conseguirCosteoImportacionPorId(Integer idCosteoImportacion) throws ServiceException {
        try {
            return dao.obtenerEntidadPorId(CosteoImportacion.class, idCosteoImportacion);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public ResultadoServicio guardarCosteoImportacion(CosteoImportacion costeoImportacion) throws ServiceException {
         ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            //banco.setId(5);
            costeoImportacion.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            dao.insertar(costeoImportacion);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }

    @Override
    public ResultadoServicio actualizarCosteoImportacion(CosteoImportacion costeoImportacion) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            dao.actualizar(costeoImportacion);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }

    @Override
    public int buscarCantidadCosteo(CosteoImportacion costeoImportacion) throws ServiceException {
        try {
            return dao.buscarCantidadCosteo(costeoImportacion);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public Collection<CosteoImportacion> buscarCosteoPorFlitro(CosteoImportacion costeoImportacion, Date fechaInicio, Date fechaFinal) throws ServiceException {
        try {
            return dao.buscarCosteoPorFlitro(costeoImportacion,fechaInicio,fechaFinal);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }
    
    
    @Override
    public CosteoImportacion conseguirCosteoImportacionPorFactura(Integer idCosteoImportacion) throws ServiceException {
        try {
            Map<String, Object> parametro = new HashMap<String, Object>();
            parametro.put("idFacturaCompra.id", idCosteoImportacion);
            parametro.put("estadoRegistro", "" + ESTADO_REGISTRO.ACTIVO.getValor());
            
            List<CosteoImportacion> costeos = ((List<CosteoImportacion>) dao.obtenerColeccionEntidadPorFiltros(CosteoImportacion.class, parametro));
            if(costeos.size() > 0){
                return costeos.get(0);
            }else{
                return null;
            }
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }
    
}
